音效
music
music(N, [FADE_LEN], [CHANNEL_MASK])
播放音乐Play music starting from pattern N (0..63)
- N = 0-63 从音乐模版N开始播放
- N = -1 停止
FADE_LEN : 过渡时间(ms) (default: 0)
例子: 从模版0播放, 过渡时间1秒:
music(0, 1000)
CHANNEL_MASK: 定义保留给音乐的通道(bit位方式)
例如, 只在通道0-2播放:
music(0, nil, 7) -- 1 | 2 | 4
如果播放音效的命令指明了使用的通道,那么音效就忽略保留选项, 如果不指明通道,那么不会使用保留的通道。
sfx
sfx(N, [CHANNEL], [OFFSET], [LENGTH])
在指定的通道(CHANNEL)上播放音效N, OFFSET是音效的数据偏移点,LENGTH是数据长度。
CHANNEL 特殊值:
- CHANNEL -1: (缺省值) 自动选择一个没有被使用的通道
- CHANNEL -2: 暂停所有音效
N 特殊值:
- N -1: 停止指定通道的音效
- N -2: 停止指定通道的音效循环
sfx(3) -- 播放音效 3
sfx(3,2) -- 播放音效3, 使用通道2
sfx(3,-2) -- 通知所有通道的音效3
sfx(-1,2) -- 停止通道2上的音效
sfx(-2,2) -- 停止通道2上的音效循环
sfx(-1) -- 停止所有音效
sfx(-2) -- 退出所有的音效循环
wave
wave(data, [from, to, audiotype])
直接播放pcm音频数据, 音频需要符合设备规格22050hz, 16bit little格式。
data 为特殊值时有特殊意义:
- wave('I') -- 初始化(申请内部资源)
- wave('R') -- 重置数据缓冲区
- wave('D') -- 释放资源
- wave('L') -- 返回剩余缓冲区大小
- wave() -- 返回剩余缓冲区大小
audiotype 表示音频类型, 默认PCM:
- 1 : adpcm
- 2 : G711a
coloX-4
version 1
__lua__
local wavefile={
#blob :ea:22050: canon.pcm
}
local curpos=0
wave('I')
function _update()
if wave()>22050 then
curpos=curpos+1
local c=wavefile[curpos]
if c then
wave(c,nil,nil,1)
else
curpos=0
end
end
end
function _draw()
cls(dark_green)
end
micpoll [version>=7]
micpoll([flag,maxlen, audiotype])
获取录音. 音频格式22050hz, 16bit little. 需要系统打开mic功能.
flag 为特殊值时有特殊意义:
- 1 -- 清缓冲区
- 2 -- 获取有效数据长度(16bit的长度)
- 3 -- 获取数据, maxlen表示最多的数据量(16bit数据)
- 4 -- 获取fft数据, 返回: avg,maxidx,maxval,[ffts]. 针对ffts, maxlen表示获取多少个点位数组. 0表示不要ffts,1表示返回直流分量ffts,n(n>1)返回数组ffts
audiotype 表示音频类型, 默认PCM:
- 1 : adpcm
- 2 : G711a
coloX-4
version 1
__lua__
wave('I')
micpoll(1)
function _update()
local d=micpoll(nil,nil,1)
if d then
wave(d,nil,nil,1)
end
end
function _draw()
cls(dark_green)
end